Use gtk_window_set_titlebar in testheaderbar
authorMatthias Clasen <mclasen@redhat.com>
Mon, 18 Mar 2013 12:26:24 +0000 (08:26 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 18 Mar 2013 12:50:22 +0000 (08:50 -0400)
This demonstrates how custom titlebars work both with
and without csd.

tests/testheaderbar.c

index 3f6d09951abcc88852b5b518a660387cb5d8f8ac..f2691926d7a047e05ca8975ce4cbfae9c8468994 100644 (file)
@@ -1,7 +1,24 @@
 #include <gtk/gtk.h>
 
 static const gchar css[] =
- ".header { -GtkWidget-window-dragging: true; }";
+ ".background { "
+ " background-image: -gtk-gradient (linear, center top, center bottom, "
+ "      from (red), "
+ "      to (blue)); "
+ " border-radius: 10px 10px 0px 0px; "
+ " border-width: 0px; "
+ "}"
+ ".titlebar:backdrop { "
+ " background-image: none; "
+ " background-color: @bg_color; "
+ " border-radius: 10px 10px 0px 0px; "
+ "}"
+ ".titlebar { "
+ " background-image: -gtk-gradient (linear, center top, center bottom, "
+ "      from (white), "
+ "      to (@bg_color)); "
+ " border-radius: 10px 10px 0px 0px; "
+ "}";
 
 int
 main (int argc, char *argv[])
@@ -18,13 +35,8 @@ main (int argc, char *argv[])
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
-  gtk_widget_realize (window);
-  gdk_window_set_decorations (gtk_widget_get_window (window),
-                              GDK_DECOR_BORDER);
-
   header = gtk_header_bar_new ();
-  gtk_style_context_add_class (gtk_widget_get_style_context (header),
-                               "header");
+  gtk_style_context_add_class (gtk_widget_get_style_context (header), "titlebar");
   provider = gtk_css_provider_new ();
   gtk_css_provider_load_from_data (provider, css, -1, NULL);
   gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (window),
@@ -38,16 +50,16 @@ main (int argc, char *argv[])
 
   gtk_header_bar_pack_end (GTK_HEADER_BAR (header), button);
 
-  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_window_set_titlebar (GTK_WINDOW (window), header);
 
+  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (window), box);
 
-  gtk_box_pack_start (GTK_BOX (box), header, FALSE, FALSE, 0);
-
   footer = gtk_header_bar_new ();
   gtk_header_bar_pack_start (GTK_HEADER_BAR (footer), gtk_button_new_with_label ("Start"));
   gtk_header_bar_set_custom_title (GTK_HEADER_BAR (footer), gtk_check_button_new_with_label ("Middle"));
-  gtk_header_bar_pack_end (GTK_HEADER_BAR (footer), gtk_button_new_with_label ("End"));
+  gtk_header_bar_pack_end (GTK_HEADER_BAR (footer), gtk_button_new_with_label ("End 1"));
+  gtk_header_bar_pack_end (GTK_HEADER_BAR (footer), gtk_button_new_with_label ("End 2"));
   gtk_box_pack_end (GTK_BOX (box), footer, FALSE, FALSE, 0);
 
   content = gtk_image_new_from_icon_name ("start-here-symbolic", GTK_ICON_SIZE_DIALOG);
@@ -55,7 +67,6 @@ main (int argc, char *argv[])
 
   gtk_box_pack_start (GTK_BOX (box), content, FALSE, TRUE, 0);
 
-
   gtk_widget_show_all (window);
 
   gtk_main ();